package com.polaris.server.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.polaris.server.dto.PassengerAgeStruct;
import com.polaris.server.dto.PassengerQueryParam;
import com.polaris.server.pojo.TrafficPassenger;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;


/**
 * <p>
 *  服务类
 * </p>
 *
 * @author polaris
 * @since 2021-06-02
 */
public interface ITrafficPassengerService extends IService<TrafficPassenger> {

    /**
     * 获取乘客的年龄结构
     * @return
     */
    List<PassengerAgeStruct> passengerAgeStruct();

    /**
     * 乘客总数
     * @return
     */
    Integer countNormal();
    /**
     * 根据性别统计乘客数量
     * @param gender
     * @return
     */
    Integer countByGender(Integer gender);
    /**
     * 统计不同性别的乘客数量
     * @return
     */
    Map<String, Object> countByGender();
    /**
     * 根据省份统计乘客数量
     * @param dist
     * @return
     */
    Integer countByDist(Integer dist);


    /**
     * 获取passenger list
     * @param queryParam
     * @param page
     * @return
     */
    IPage<TrafficPassenger> list(PassengerQueryParam queryParam, Page<TrafficPassenger> page);

    /**
     * 通过gender获取乘客list
     * @param gender
     * @param page
     * @return
     */
    IPage<TrafficPassenger> listByGender(Integer gender, Page<TrafficPassenger> page);

    /**
     * 通过dist获取乘客list
     * @param dist
     * @param page
     * @return
     */
    IPage<TrafficPassenger> listByDist(Integer dist, Page<TrafficPassenger> page);

    /**
     * 通过id查询
     * @param id
     * @return
     */
    TrafficPassenger getById(Long id);

    /**
     * 通过乘客id查询
     * @param pid
     * @return
     */
    TrafficPassenger getByPassengerId(String pid);

    /**
     * 添加乘客
     * @param queryParam
     * @return
     */
    TrafficPassenger createPassenger(PassengerQueryParam queryParam);

    /**
     * 更新乘客信息
     * @param queryParam
     * @return
     */
    TrafficPassenger updatePassenger(PassengerQueryParam queryParam);

    /**
     * 通过id删除乘客
     * @param id
     * @return
     */
    Boolean deleteById(Long id);

    /**
     * 通过pid删除乘客
     * @param pid
     * @return
     */
    Boolean deleteByPassengerId(String pid);
}
